package oen.game.csv.loader.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * <p>描述：CSV表格字段注解</p>
 *
 * <p>创建时间：2021-11-09 12:31</p>
 * <p>更新时间：暂无</p>
 *
 * @author Kevin.Xu
 * @version 1.0
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface CSVField {

    /**
     * 字段头名字
     *
     * @return value
     */
    String value() default "";

    /**
     * 字段所在的位置 0开始
     *
     * @return idx
     */
    int idx() default -1;

    /**
     * 此字段是否是唯一的ID
     *
     * @return id
     */
    boolean id() default false;

    /**
     * 此字段是否是分组用的ID
     *
     * @return groupId
     */
    boolean groupId() default false;

    /**
     * 此字段是否是父级ID，需要和id配合使用
     *
     * @return parentId
     */
    boolean parentId() default false;

    /**
     * List的分隔符，默认使用逗号
     *
     * @return 分隔符
     */
    String split() default ",";

    /**
     * <p>字段默认值</p>
     * <p>List写法：[value1, value2, value3, value4...]</p>
     * <p>Map写法：{key1:value1, key2:value2, key3:value3...}</p>
     * <p>目前只支持：String,Integer,Short,Double,BigDecimal,Boolean,List<前面支持的基础类型>,Map<前面支持的基础类型，前面支持的基础类型></p>
     *
     * @return 对象
     */
    String dft() default "";
}
